package cn.cihon.ubi.qorosauto.util;

import java.util.Date;
import java.util.logging.SimpleFormatter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import clojure.main;

/**
 * 
 * 此类用于实现字符串和Date类型数据的转换
 * 
 * @author guodawei
 *
 */
public class DateUtil {
	
	/************************** 格式转换方法 ********************************/

	/**
	 * 日期转换成字符串
	 * 
	 * @param date
	 * @return str
	 */
	public static String DateToStr(Date date) {
		if (date == null) {
			return "";
		}
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String str = format.format(date);
		return str;
	}

	/**
	 * 字符串转换成日期
	 * 
	 * @param str
	 * @return date
	 */
	public static Date StrToDate(String str) {

		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = null;
		try {
			date = format.parse(str);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	
	/**************************日期\时间 计算方法********************************/

	/**
	 * 计算两个Date类型数据时间间隔，单位为毫秒
	 * @param time1
	 * @param time2
	 * @return
	 */
	public static Long dateDiff(Date date1, Date date2) // 两个标准时间的差值，差值为毫秒
	{
		long l = 0;
		try {
			l = date1.getTime() - date2.getTime();
		} catch (Exception e) {
		}
		return l;
	}

	/**
	 * 无计算，纯形式转换，将毫秒值变为字符串显示
	 * @param str
	 * @return
	 */
	public static String millisecondToDateString(Long millisecond) 
	{
		String time=null;
		long day = millisecond / (24 * 60 * 60 * 1000);
		long hour = (millisecond / (60 * 60 * 1000) - day * 24);
		long min = ((millisecond / (60 * 1000)) - day * 24 * 60 - hour * 60);
		long s = (millisecond / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
		time= "" + day + "天" + hour + "小时" + min + "分" + s + "秒";
		return time;
	}

	/**
	 * 获得以毫秒表示的当前时间
	 * @param recordTimestamp
	 * @return
	 */
	public static Long getMilliSecond() {
		long currentTime=0;
		SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");         //设置日期格式(时分秒)
		//System.out.println(df.format(new Date()));               // new Date()为获取当前系统时间
		try {
			currentTime=df.parse(df.format(new Date())).getTime()+28800000;        //java时间转化;
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return currentTime;
	}
	
	/**
	 * 获得以表示的日期
	 * @param recordTimestamp
	 * @return
	 */
	public static String getDateStr(Date recordTimestamp) {
		if (recordTimestamp == null) {
			return "";
		}
		String dateStr;
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		dateStr = format.format(recordTimestamp);
		return dateStr;
	}
	
	/**
	 * 传入三个时间点，判断第二个时间是否介于第一第二个时间之间
	 */
	public static Boolean isSecondTimeBetweenFirstTimeAndThirdTime(Date time1, Date time2, Date time3) {
		if (time1 == null || time2 == null || time3 == null) {
			return false;
		}
		if (time1.before(time2) && time2.before(time3)) {
			return true;
		}
		return false;
	}
	
}